Optical codes, such as well-known one and two-dimensional barcodes, are ubiquitous and critical in a wide variety of automatic data capture applications. Indeed, barcodes are so widespread, it is now common to see a variety of barcode types on a single object to carry different types of data, or to improve readability by redundantly encoding the same data on different parts of the object.
This growing use of barcodes poses a number of challenges for package and label designs. First, each barcode must occupy a distinct space to ensure that it can be read reliably. This takes up valuable space that could be used for more important information, such as product information and artistic design elements that enhance the value and attractiveness of the object to users. Second, it creates a potential for confusion and complexity in image processing for image-based scanners, which are rapidly replacing laser scanners. While laser scanners can be directed at particular barcodes, one at a time, image-based scanners capture image frames that may contain part or all of one or more of the optical codes. Third, to reduce the visual impact of these codes, they are often reduced in size and confined to difficult to find locations on the objects. This makes them less reliable, and harder for users and machine vision equipment to locate and read reliably.
Other types of optical codes, such as robust digital watermarks, provide alternatives to conventional barcodes that address these challenges in various ways. Digital watermarks may be hidden within other images on the object, and thus not occupy valuable, dedicated space. They also may be redundantly encoded over the object surface to improve the ease of locating and reliably reading the digital data codes they carry (referred to as the payload, or message). This simplifies the task of imaging the object to obtain image frames from which the digital watermark payload can reliably be decoded. The watermark technology also improves computational efficiency and reliability of automatic data capture in a variety of usage scenarios. It does so because it facilitates reliable data capture from arbitrary and partial views of the object or label, even if ripped, smudged or crinkled.
While digital watermarks provide these enhancements, there are important applications where there is a need for improved optical data carrying capability that meets aesthetic, robustness, and data capacity requirements.
One challenge is the formation of minimally invasive optical codes for host image areas lacking image content that can mask the optical code or even act as a carrier of it. In these areas, it is possible to generate a subtle tint that carries machine-readable data. Additionally, in some cases, it is possible to select ink colors, or a combination of inks, to reduce visibility of the optical code to humans while retaining reliability for standard visual light scanning. For visual quality reasons, it is generally preferable to generate an optical code at a higher spatial resolution and space the graphical elements (e.g., dots) of the code at a distance from each other so that they are less noticeable.
However, there are often limits to color selection and resolution that preclude these options. Many objects are printed or marked with technology that does not allow for color selection, and that does not reliably mark dots below a minimum dot size. The use of low-resolution thermal printers to print optical codes on small labels, sometimes at high print speeds, is one example. Other examples include commercial printing of small packages that use techniques like dry offset or flexographic printing, which are incapable of rendering with high quality and consistency at high resolution and small dot sizes. Moreover, there are often restrictions based on design and cost constraints of using additional inks. Finally, even if rendering equipment can leverage higher resolution and smaller dot marking, and various color inks, the image capture infrastructure or mode of image capture may be incapable of capturing higher resolution or color information.
Another persistent challenge is the need to reliably read data from increasingly smaller spatial areas. The demand for increasing data capacity is fundamentally at odds with reliable recovery of that data from a limited area.
As detailed in this specification, we have developed several inventive optical code technologies that address these and other challenges for various applications. One inventive technology is a method for generating an optical code that optimizes parameters for visual quality and robustness (reliability) constraints. These parameters include spatial density, dot placement (e.g., spacing to avoid clumping), dot size and priority of optical code components. In the latter case, the priority of code components, such as reference (synchronization) signal and payload components, is optimized to achieve improved robustness and visual quality.
Inventive technologies include methods for converting optical code components into signal rich art. These methods include techniques for drawing line art so as to emphasize prioritized components of the optical code. They also include methods for generating stipple, Voronoi and Delaunay patterns from optical code components.
Additional inventive technologies include optical code insertion and decoding methods. The optical code insertion methods merge the optical codes into host image content, such as a package or label design. Certain embodiments of the insertion method take into account and leverage attributes of a host image to improve visual quality and robustness. Embodiments of the decoding methods efficiently and reliably decode the payload from degraded images captured of marked objects.
These inventive methods are implemented in optical code generators, inserters, optimizers and decoder components. These components are implemented in software modules executed by processors of various kinds, such as those used in thermal label printers, pre-press workstations, mobile devices, and image-based barcode scanners of various kinds. The software instructions may also be converted to logic circuitry, such as application specific integrated circuits, programmable gate arrays, or combinations of them.
Additional inventive features will become apparent in the follow detailed description and accompanying drawings.